#include "NvInfer.h"
#include "logging.h"
#include <fstream>
#include <map>
#include <chrono>

#define TODO() assert(0)


#define CHECK(status) \
	do\
	{\
		auto ret = (status);\
		if(ret != 0)\
		{\
			std::cerr << "cuda failure: " << ret << std::endl;\
			abort();\
		}\
	}while(0)\

static const int INPUT_H = 224;
static const int INPUT_W = 224;
static const int OUTPUT_SIZE = 1000;

const char *INPUT_BLOB_NAME = "data";
const char *OUTPUT_BLOB_NAME = "prob";

using namespace nvinfer1;

static Logger gLogger;

std::map<std::string, Weights> loadWeights(const std::string file)
{
	TODO();
}

int main(int argc, char *argv[])
{
	//vals declare
	IBuilder *builder;
	IBuilderConfig *config;
	ICudaEngine *engine;
	INetworkDefinition *network;

	// PART1: engine build and serialize
	// network build
	builder = createInferBuilder(gLogger);
	config = builder->createBuilderConfig();
	network = builder->createNetworkV2(0U);
	TODO();

	
	// PART2: engine deserialize

	// PART3: do inference
}

